Projectile 3D attitude from 3-axis magnetometer and single-axis accelerometer

ABSTRACT

A method to determine roll angle, pitch angle, and heading angle of a spinning projectile during a flight of the spinning projectile is provided. The method includes providing a magnetic unit vector in an inertial frame of the projectile at a projectile launch location prior to launch of the projectile; determining a magnetic unit vector in a body frame and in an inertial frame of the spinning projectile during the flight of the spinning projectile; determining a velocity unit vector in the body frame and in the inertial frame of the spinning projectile during the flight of the spinning projectile; and calculating the roll angle, the pitch angle, and the heading angle of the spinning projectile during the flight of the spinning projectile, regardless of the spin rate of the projectile. The roll angle and the pitch angle of the spinning projectile form an attitude of the spinning projectile.

BACKGROUND

A projectile fired from a rifled barrel spins too rapidly for inexpensive rate gyroscopes to accurately measure the spin rate, attitude, and heading angle of the projectile. Typically, an inexpensive rate gyroscope is unable to measure spin rates over 100 Hz. Thus, projectiles that incorporate inexpensive rate gyroscopes are typically despun after launch in order to reduce the spin rate of the projectile to less than 100 Hz. For example, the spin rate of a despun projectile is slowed down by a protrusion of wings or buffers from the projectile body. In this manner, the inexpensive rate gyroscopes can measure the attitude and heading angle of the projectile in flight. An exemplary inexpensive rate gyroscope is a micro-electro-mechanical system (MEMS) rate gyroscope.

SUMMARY

The present application relates to method to determine roll angle, pitch angle, and heading angle of a spinning projectile during a flight of the spinning projectile. The method includes providing a magnetic unit vector in an inertial frame of the projectile at a projectile launch location prior to launch of the projectile; determining a magnetic unit vector in a body frame and in an inertial frame of the spinning projectile during the flight of the spinning projectile; determining a velocity unit vector in the body frame and in the inertial frame of the spinning projectile during the flight of the spinning projectile; and calculating the roll angle, the pitch angle, and the heading angle of the spinning projectile during the flight of the spinning projectile, regardless of the spin rate of the projectile. The roll angle and the pitch angle of the spinning projectile form an attitude of the spinning projectile.

DRAWINGS

FIG. 1 shows an embodiment of the projectile and three reference frames in accordance with the present invention;

FIGS. 2 and 3 show embodiments of an apparatus used to measure a three-dimensional attitude of a spinning projectile during a flight of the spinning projectile in accordance with the present invention;

FIG. 4 shows the plots of the true accelerometer measurements and the low-pass filtered accelerometer measurements for a 155 mm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz;

FIG. 5 shows an exemplary unit velocity vector on the unit sphere for a projectile in accordance with the present invention;

FIG. 6 shows a flight path angle for an exemplary projectile in accordance with the present invention;

FIG. 7 shows the plots of the true flight path angle and estimated flight path angle for an exemplary 155 mm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz;

FIG. 8 shows the plots of the scalar components of the true velocity vector and an estimated velocity vector resolved in the projectile's North East Down frame for a 155 nm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz;

FIG. 9 is a flow diagram of the vector matching algorithm;

FIG. 10 shows the plots of the direction cosine matrix estimation error computed using the vector matching algorithm;

FIG. 11 shows the plots of the Euler angle estimation errors computed using the vector matching algorithm; and

FIG. 12 is a flow diagram of one embodiment of a method to measure and determine a three-dimensional attitude of a spinning projectile during a flight of the spinning projectile in accordance with the present invention.

In accordance with common practice, the various described features are not drawn to scale but are drawn to emphasize features relevant to the present invention. Like reference characters denote like elements throughout figures and text.

DETAILED DESCRIPTION

The apparatus described herein is used in a spinning projectile to calculate a three-dimensional attitude in a spinning projectile, even when the projectile spins with a spin rate greater than 100 Hz. Embodiments of the apparatus include a three-axis magnetometer, a single-axis accelerometer orientated with the sense axis aligned to the spin axis of the spinning projectile, and at least one algorithm executable by a processor to calculate the three-dimensional attitude of the projectile during the projectile's traversal from a launch location to a final destination. In one implementation of this embodiment, the at least one algorithm includes multiple software modules.

Projectiles without guidance, navigation, and control capability or dumb projectiles (e.g., dumb munitions) are unable to determine their three-dimensional (3D) attitude (i.e., a roll angle, a pitch angle, and a heading angle). The apparatus described herein can be attached to (or inserted into) dumb munitions in order to turn them into smart munitions that are able to detect and control their 3D attitude during a flight from a launch location to a final destination. Thus, available stockpiles of dumb munitions can be inexpensively retrofitted as smart munitions with the apparatus describe herein.

There are several disadvantages of firing projectiles without guidance, navigation, and control capability: 1) the projectile could miss its intended target; 2) the projectile launch system is exposed to a potential adversary; 3) the cost of each projectile and its launch; and 4) the potential collateral damage should the projectile miss its intended target. Given the existing stockpile of projectiles that are not equipped with guidance, navigation, and control systems capable of providing closed loop control, the advantages of equipping the existing stockpile of projectiles with guidance, navigation, and control systems are as follows: 1) the current inventory of projectiles can be used in more demanding applications; 2) the projectiles do not have to be replaced; and 3) the launch systems do not have to be replaced.

The three-dimensional (3D) attitude of the projectile is stabilized in two ways. First, the 3D attitude of a projectile is stabilized using canards. These projectiles are typically slow spinning (<20 Hz), or despun, and require in-flight 3D attitude control and in-flight trajectory guidance. Second, the 3D attitude of the projectile is spin stabilized. These projectiles are fast spinning projectiles. A fast spinning projectile is dynamically stabilized due to its spin rate and is inherently more stable than a despun projectile. Therefore, in ideal conditions, fast spinning projectiles require no control effort to stabilize the 3D attitude whereas slow spinning projectiles require control effort to stabilize the 3D attitude. However, fast spinning projectiles still require in-flight trajectory guidance because disturbance forces including tip-off rates, launch system exit velocity variations, wind gusts, and other meteorological conditions can cause the projectile to miss its intended target.

The embodiments of apparatuses and methods described herein provide an attitude and heading reference system (AHRS) for accurate, reliable, and low-cost guidance and navigation that can be attached to existing projectiles in a low-cost, projectile. For example, the apparatus can be attached to a projectile in a screw-on nose kit. The nose kits include an AHRS that is useful even for fast spinning projectiles, such as gun-launched projectiles with initial angular velocities greater than 100 Hz.

FIG. 1 shows an embodiment of the projectile 100 and three reference frames F_(N), F_(b), F_(s) in accordance with the present invention. The projectile 100 includes an apparatus 10 to measure the 3D attitude of the projectile 100 after it is launched and as it spins during a flight from the launch location 4 to a final destination (not shown). The apparatus 10 is also referred to herein as “projectile attitude and heading angle reference system 10.” In one implementation of this embodiment, the apparatus 10 is part of a nose kit that is attached to a projectile 100. The apparatus 10 is described in detail below with reference to FIG. 2. At the projectile launch location 4, the earth 5 has an exemplary local magnetic field the direction of which is indicated by the arrow 50. The magnetic field 50 of the earth 5 does not vary significantly over that distance that a typical projectile 100 travels (e.g., tens of kilometers).

FIG. 1 shows the three reference frames used to specify the attitude and heading angle of the projectile 100 traversing the nearly ballistic trajectory 60. The first reference frame is the North East Down (NED) frame, F_(N), which is also referred to herein as the “navigation frame F_(N)” or “inertial frame F_(N)”. The NED frame, F_(N), is spanned by the vectors (X_(N), Y_(N), Z_(N)). The NED frame, F_(N), has an origin located at the projectile launch position 4 on the earth 5. The N-axis, or {circumflex over (x)}_(N)-axis, points in the local North direction. The E-axis, or ŷ_(N)-axis, points in the local East direction. The {circumflex over (x)}_(N)-ŷ_(N) plane can be considered a local horizontal, or local level, plane. The D-axis, or {circumflex over (z)}_(N)-axis, points in the local Down direction. Specifically, the {circumflex over (z)}_(N)-axis is aligned to the earth's gravitational force and points down toward the center of the earth 5. Thus, the frame F_(N) is a local vertical local horizontal frame (North, East and Down or NED) that is assumed to be inertial.

The second frame is a projectile body frame, F_(b), which is spanned by vectors (X_(b), Y_(b), Z_(b)). The projectile's body frame, F_(b), is assumed to be the projectile's principal axis frame. The origin of the body frame F_(b) is located at the center of mass of the projectile 100. The position vector, {right arrow over (r)}, specifies the origin of the body frame F_(b) relative to the navigation frame F_(N). Without loss of generality, the body frame F_(b) x-axis, or {circumflex over (x)}_(b)-axis, is assumed to point to the front of the projectile 100, the body frame F_(b) y-axis, or ŷ_(b)-axis, coincides with a principal axis normal to the {circumflex over (x)}_(b)-axis, and the body frame F_(b) z-axis, or {circumflex over (z)}_(b)-axis, coincides with a principal axis normal to the {circumflex over (x)}_(b)- and ŷ_(b)-axes.

The third frame is a sensor measurement frame F_(s) which is spanned by vectors (X_(s), Y_(s), Z_(s)). The sensor measurement frame F_(s) specifies the orientation of the sensor measurement axes. The origin of the sensor measurement frame F_(s) is located at the sensor position on the projectile 100. The position vector {right arrow over (r)}_(s) specifies the origin of the sensor measurement frame F_(s) relative to the body frame F_(b). The sensors locations are fixed on the projectile and, thus, the orientation of the sensor measurement frame F_(s) relative to the body frame F_(B) is fixed and {right arrow over (r)}_(s) is fixed. The principal axis {circumflex over (x)}_(b) of the projectile 100 is also the spin axis X_(p) around which the projectile 100 spins upon launch. The spin axis X_(p) is parallel to the velocity vector {right arrow over (v)} of the spinning projectile 100 during an initial phase of the flight of the spinning projectile 100.

FIGS. 2 and 3 show embodiments of an apparatus used to measure a three-dimensional attitude of a spinning projectile 100 during a flight of the spinning projectile 100 in accordance with the present invention. FIG. 2 shows an embodiment of an apparatus 10 that includes sensors 109, a processor 140, a memory 135, and an attitude estimator module 130 in a non-transitory storage medium 131. The memory 135 stores inertial data and the magnetic unit vector in the inertial frame of the projectile 100 prior to the launch. The magnetic unit vector is provided to the processor 140 on the projectile 100 from the three-axis magnetometer 110. The processor 140 executes algorithms in the attitude estimator module 130. The attitude estimator module 130 includes a low-pass filter 129 that is applied to an accelerometer output to estimate drag. The attitude estimator module 130 also includes a vector matching algorithm 133.

The sensors 109 include the three-axis magnetometer 110 and the single-axis accelerometer 120 aligned with the projectile's spin axis X_(p) to measure the projectile's attitude (pitch angle and roll angle) and heading angle. In the embodiments described herein, the measurement axes of the three-axis magnetometer 110 are parallel to the principal axes of the projectile 100 and the measurement axis 121 of the single-axis accelerometer 120 is aligned with the spin axis X_(p) of the projectile 100. The “single-axis accelerometer 120” is also referred to herein as “accelerometer 120,” and as “spin-axis accelerometer 120.” The sensors 109 are not subject to frequency jamming (as are GPS sensors), and are not sensitive to environmental conditions of the launch site or time, such as cloud cover (as are sun sensors and star trackers). In one implementation of this embodiment, the low cost sensors are micro-electro-mechanical system (MEMS) sensors that can withstand 20 KG forces.

The sense axis 121 of the single-axis accelerometer 120 is oriented parallel to the velocity vector {right arrow over (v)} of the spinning projectile 100 during the flight of the spinning projectile 100. Specifically, prior to launch of the projectile 100, the sense axis 121 of the accelerometer 120 is set to be parallel to the {circumflex over (x)}_(b)-axis of the body frame of the projectile 100.

The three-axis magnetometer 100 measures the local magnetic field 50 of the earth 5 and outputs information indicative of the local magnetic field 50 to the processor 140 prior to launch of the projectile 100 and during the flight of the projectile 100. The accelerometer 120 measures the velocity of the spinning projectile 100 and outputs information indicative of the velocity to the processor 140 during the flight of the projectile 100.

The processor 140 is communicatively coupled to receive an output from the sensors 109. The processor 140 is communicatively coupled with the memory 135 and is operable to retrieve the magnetic unit vector in the inertial frame of the projectile 100 that was stored prior to launch during execution of the algorithms in the attitude estimator module 130.

FIG. 3 shows an embodiment of an apparatus 11 used to measure a three-dimensional attitude of a spinning projectile 100 during a flight of the spinning projectile 100 in accordance with the present invention. The apparatus 11 differs from apparatus 10 in that the non-transitory storage medium 131 also includes a Kalman filter 132 that is communicatively coupled to the attitude estimator module 130. In the apparatus 11, an output from the attitude estimator module 130 is provided to the Kalman filter 132, which provides additional processing. In one implementation of this embodiment, the Kalman filter 132 computes estimates of the attitude and heading angle of the spinning projectile 100.

The operation of the apparatus 10 is now described with reference to FIGS. 1 and 2. The same description is also applicable with reference to FIGS. 1 and 3. The magnetic field 50 is constant in the inertial frame along the trajectory 60 of the projectile 100 and is measured by the 3-axis magnetometer 110 in the moving body frame (X_(b), Y_(b), Z_(b)) of the projectile 100. The 3-axis magnetometer 110 provides the x, y, z components of the magnetic field 50 in the body frame (X_(b), Y_(b), Z_(b)). The x, y, z components of the magnetic field 50 in the inertial frame (X_(N), Y_(N), Z_(N)) are known from the pre-launch conditions. In one implementation of this embodiment, the x, y, z components of the magnetic field 50 in the inertial frame (X_(N), Y_(N), Z_(N)) are stored in the memory 135.

The attitude estimator module 130 (FIGS. 2 and 3) includes algorithms that: use a low-pass filter 129 on the accelerometer measurements to compute the drag acting on the projectile 100; estimate the velocity vector of the projectile resolved in the inertial frame 100; estimate the velocity vector of the projectile resolved in the body frame; generate a 3×3 unit vector matrix; invert the 3×3 unit vector matrix; and multiply the inverted 3×3 unit vector matrix and non-inverted 3×3 unit vector matrix to solve for Wahba's problem. Wahba's problem is described in the article entitled “A Least Squares Estimate of Satellite Attitude” that is published in SIAM Review, Vol. 8, No. 3, (1966) 384-386, and which is incorporated herein by reference in its entirety.

The attitude estimator module 130 uses the x, y, z components of the magnetic field 50 in the inertial frame (X_(N), Y_(N), Z_(N)) to the x, y, z components of the magnetic field 50 in the body frame (X_(b), Y_(b), Z_(b)) to generate the direction cosine matrix. However, this direction cosine matrix is not unique. The accelerometer 120 provides the extra measurement needed to determine the direction cosine matrix uniquely. The algorithms (such as vector matching algorithm 133) used by the attitude estimator module 130 for these functions are shown and described below.

The accelerometer 120 measures the specific force acting along the spin axis of the projectile 100 and provides information indicative of how much the projectile 100 is slowing down due to air drag. During the initial phase of the propagation, the velocity changes are only due to air drag on the projectile 100 and are not due to nutation of the projectile 100. Since the velocity vector {right arrow over (v)} and the magnetic field vector are known in both the inertial frame F_(N) and in the body frame F_(b), the direction cosine matrix between the two frames can be determined uniquely.

The apparatus 10 measures the three-dimensional attitude of the projectile 100 during the flight. If needed, a correction can be supplied to the projectile 100 to reorient the projectile 100 so that the projectile 100 is back on the trajectory required for the projectile 100 to reach the final destination. An internal correction signal is generated by the processor 140 (FIGS. 2 and 3) to adjust the orientation of the projectile 100 as required to keep the projectile 100 on track to the final destination. Techniques to reorient the projectile 100 are known in the art and can be applied after the three-dimensional attitude of the projectile 100 is known. Since the 3D attitude of the projectile 100 is internally adjusted and the location of the projectile 100 is not communicatively coupled to any external system, there is no possibility of jamming the sensor measurements or correction signals to or from the projectile 100 by a hacker.

A velocity vector and direction cosine matrix are determined for a rapidly spinning, nutating, and precessing projectile 100 whose center of gravity is following the nearly ballistic trajectory 60 using the apparatus 10 mounted on the projectile 100 in the manner described below. This velocity vector and direction cosine matrix are determined using sensor data from only the 3-axis magnetometer 110 and the single-axis accelerometer 120 with the sense axis 121 (input axis 121) along the spin axis X_(p).

First, the unit vectors of the velocity vector in both the body frame F_(b) and inertial frame F_(N) are determined. The unit vectors of the velocity vector in both the body frame F_(b) and inertial frame F_(N) is and the known or measured unit vectors of the magnetic field vector 50 in both body frame F_(b) and inertial frame F_(N) are used to formulate Wahba's problem. Wahba's problem is used to compute a least squares estimate of the direction cosine matrix between the projectile's navigation frame F_(N) and body frame F_(b).

Given a set of vectors, u₁ ^(b), u₂ ^(b), . . . , u_(n) ^(b) ∀n≧2, measured in the body frame F_(b) and the same set of vectors known in the navigation frame F_(N), u₁ ^(N), u₂ ^(N), . . . , u_(n) ^(N) ∀n≧2, the direction cosine matrix that minimizes the performance index is computed:

$\begin{matrix} {J_{WP} = {\sum\limits_{i = 2}^{n}{{u_{i}^{b} - {C_{bN}u_{i}^{N}}}}^{2}}} & (1.1) \end{matrix}$ where C_(bN) refers to the direction cosine matrix between F_(N) and F_(b). As applied herein, the superscript following a matrix indicates that the scalar components of the corresponding vector are resolved relative to the basis vectors of the reference frame indicated by the superscript.

In this approach, the direction cosine matrix is computed by matching at least two vectors that are measured in the body frame F_(b) to the same set of vectors that are known, or modeled, in the navigation frame F_(N). A unique solution to Wahba's problem requires at least two non-zero, non-collinear vectors because at least two vectors are required to uniquely define a plane. Therefore, if only one vector measurement is available, then Wahba's problem does not have a unique solution because there is a rotational ambiguity about the axis aligned with the vector measurement.

Nominally, a spinning projectile in free-fall is subject to only gravitational force. In this case, the projectile's center of mass follows a parabolic trajectory, and the projectile's spin axis is tangent to this parabolic trajectory and is coincident with the projectile's velocity vector. However, spinning projectiles are subject to aerodynamic forces such as drag and disturbance forces such as tip-off rates, wind gusts, and other meteorological conditions. These aerodynamic and disturbance forces cause the projectile's center of mass to deviate from the parabolic trajectory and the projectile's spin axis to precess and nutate about the tangent to the projectile's trajectory. The precession and nutation angles are, typically, small. The projectile's velocity vector is coincident with the tangent to the projectile's trajectory.

The attitude and heading angle of the projectile 100 are not observable using a vector measurement from the three-axis magnetometer 110 at any single epoch. However, the measurements of the single-axis accelerometer 120 can be manipulated to provide a measurement of the projectile's velocity vector. If the magnetic field vectors in the navigation frame F_(N) and body frame F_(b) are not parallel to the projectile's velocity vectors in the navigation frame F_(N) and body frame F_(b), then the accelerometer measurements can resolve the rotational ambiguity inherent in a single three-axis magnetometer measurement. Since the measurement axis 121 of the accelerometer 120 is aligned with the projectile's spin axis X_(p), the accelerometer 120 measures components of the projectile's rotational and linear acceleration.

The vector matching algorithm 133 is used to determine the direction cosine matrix between the projectile's navigation frame and body frame at a single epoch using the following procedure: the local Earth magnetic field vector is measured using the three-axis magnetometer 110; a vector matching algorithm 133 in the attitude estimator module 130 is provided with the local Earth magnetic field vector 50 at the launch location 4 prior to launch of the projectile 100; the specific force of the projectile 100 is measured along its spin axis X_(p); the accelerometer measurement is filtered to determine the magnitude of the projectile's various acceleration components; the filtered accelerometer measurements are used in combination with the magnetometer measurements to determine the projectile's velocity vector in the projectile's navigation frame F_(N) and body frame F_(b). As defined herein the “specific force” is the force measured by the accelerometer 120.

The following assumptions regarding the reference frames are made to enable dynamic analysis of the projectile: the NED frame is the inertial frame F_(N); the origin of the NED frame is at the projectile's launch site; the direction of the NED frame axes are fixed during the projectile's flight; the projectile's body frame F_(b) is a principal axis frame.

The following assumptions regarding the sensors 109 are made to enable dynamic analysis of the projectile 100: the sensor locations are fixed on the projectile; the origin of the sensor measurement frame is in the {circumflex over (x)}_(b)-ŷ_(b) plane; the magnetometer measurement axes are parallel to the axes of the projectile's body frame F_(b); the magnetometer 110 is calibrated; the accelerometer measurement axis 121 is nominally aligned with the {circumflex over (x)}_(s)-axis.

The following assumptions regarding the projectile dynamics are made to enable dynamic analysis of the projectile: following launch, the projectile is in a free-fall trajectory subject to drag; the projectile is spin-stabilized along the minor axis with spin rate ≦300 Hz; the local Earth magnetic field (EMF) vector does not vary over the length and duration of the projectile trajectory and can be determined from geodetic survey data, computer models, or direct measurement; the gravity vector is aligned with the {circumflex over (z)}_(N)-axis. The processor 140 enables a low-cost, real-time attitude and heading angle reference system.

Since the vector matching algorithm 133 described herein includes these above mentioned assumptions, output from the vector matching algorithm 133 based on a simulation of an exemplary fast-spinning projectile in flight is shown in FIGS. 4-8. The simulation provides a check for the performance of the vector matching algorithm 133 in estimating the attitude and heading angle of the projectile 100.

The vector matching algorithm 133 described in the paper is applicable to fast spinning projectiles. However, in applications with slow-spinning projectiles, the sensor set can be augmented with an orthogonal triad of rate gyros and the vector matching algorithm 133 can be augmented with a Kalman filter, such as, Kalman filter 132 shown in FIG. 3, to estimate the 3D attitude of the slow-spinning projectile 100. The vector matching algorithm 133 can be augmented, first, by using the attitude estimator module 130 to design the measurement model of the Kalman filter 132 and, second, by selecting projectile dynamic models for the Kalman filter 132. These dynamic models can include the 3D attitude dynamic equations, the attitude kinematic equations, and gyro measurement models.

The equations of motion (e.g., the kinematic variables, dynamic variables, equations of motion, and accelerometer measurement equations) for a spinning projectile and the equations relating the accelerometer measurements to the projectile's kinematic and dynamic variables are now formulated.

The kinematic variables used to derive the dynamic equations of the projectile are now defined. The position vector of the projectile's center of mass resolved in the projectile's body frame is

$\begin{matrix} {r^{b} = \left\lbrack \begin{matrix} l_{x} & l_{y} & \left. l_{z} \right\rbrack^{T} \end{matrix} \right.} & (2.1) \end{matrix}$

The position vector of the origin of the sensor measurement frame relative to the origin of the projectile's body frame resolved in the projectile's body frame is

$\begin{matrix} {r_{s}^{b} = \left\lbrack \begin{matrix} r_{x} & r_{y} & \left. r_{z} \right\rbrack^{T} \end{matrix} \right.} & (2.2) \end{matrix}$

The angular velocity vector of the projectile, {right arrow over (ω)}, resolved in the projectile's body frame is

$\begin{matrix} {\omega^{b} = \left\lbrack \begin{matrix} \omega_{x} & \omega_{y} & \left. \omega_{z} \right\rbrack^{T} \end{matrix} \right.} & (2.3) \end{matrix}$

The attitude kinematic equations, parameterized using the direction cosine matrix, is written as Ċ _(bN)=−(ω^(b))^(x) C _(bN)  (2.4) where (∘)^(x) refers to the skew-symmetric operator. The velocity vector of the origin of the sensor measurement frame, {right arrow over (v)}_(s), is {right arrow over (v)} _(s) ={right arrow over (v)}+{right arrow over (ω)}×{right arrow over (r)} _(s)  (2.5)

where {right arrow over (v)} refers to the velocity vector of the projectile's center of mass and where

$\begin{matrix} {v_{s}^{b} = \left\lbrack {{\begin{matrix} v_{sx} & v_{sy} & \left. v_{sz} \right\rbrack^{T} \end{matrix}v^{b}} = \left\lbrack \begin{matrix} v_{x} & v_{y} & \left. v_{z} \right\rbrack^{T} \end{matrix} \right.} \right.} & (2.6) \end{matrix}$

The acceleration vector of the origin of the sensor measurement frame, {right arrow over (a)}_(s) is {right arrow over (a)} _(s) ={right arrow over ({dot over (v)} _(s)|_(b) +{right arrow over (ω)}×{right arrow over (v)} _(s)  (2.7)

Equation (2.5) is substituted into equation (2.7), and {right arrow over (a)}_(s) can be rewritten as {right arrow over (a)} _(s) ={right arrow over ({dot over (v)}| _(b)+{right arrow over ({dot over (ω)}|_(b) ×{right arrow over (r)} _(s) +{right arrow over (ω)}×{right arrow over (v)}+{right arrow over (ω)}×({right arrow over (ω)}×{right arrow over (r)} _(s)).  (2.8)

The sensor locations are fixed on the projectile. Equation (2.8) is resolved in the projectile's body frame as:

$\begin{matrix} \begin{matrix} {a_{s}^{b} = \begin{bmatrix} a_{sx} & a_{sy} & a_{sz} \end{bmatrix}^{T}} \\ {= {{\overset{.}{v}}^{b} + {{\overset{.}{\omega}}^{bx}r_{s}^{b}} + {\omega^{bx}v^{b}} + {\omega^{bx}\omega^{bx}{r_{s}^{b}.}}}} \end{matrix} & (2.9) \end{matrix}$

The accelerometer measurement axis vector, {right arrow over (r)}_(A), resolved in the body frame is

$\begin{matrix} {r_{A}^{b} = \left\lbrack \begin{matrix} 1 & ɛ_{y} & \left. ɛ_{z} \right\rbrack^{T} \end{matrix} \right.} & (2.10) \end{matrix}$ where ε_(y), ε_(z) refer to the misalignment of the accelerometer measurement axes from the {circumflex over (x)}_(b)-axis.

The projectile's body frame is set as a principal axis frame, so the second (mass) moment of inertia of the projectile, {right arrow over (J)}, is written as

$\begin{matrix} {J_{b} = \begin{bmatrix} J_{x} & 0 & 0 \\ 0 & J_{y} & 0 \\ 0 & 0 & J_{z} \end{bmatrix}} & (2.11) \end{matrix}$

Since the projectile is spin stabilized about its minor axis it is assumed that J _(y) =J _(z) ≧J _(x)  (2.12)

The dynamic equations of the projectile are now derived. The translational equations of motion of the projectile at the projectile's center of mass and at the origin of the sensor measurement frame are

$\begin{matrix} {{\frac{\overset{\rightarrow}{F}}{m_{b}} = {{\overset{\rightarrow}{a}}_{s} = {{\overset{.}{\overset{\rightarrow}{v}}{_{b}{+ \overset{.}{\overset{\rightarrow}{\omega}}}}_{b} \times {\overset{\rightarrow}{r}}_{s}} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} + {\overset{\rightarrow}{\omega} \times \left( {\overset{\rightarrow}{\omega} \times {\overset{\rightarrow}{r}}_{s}} \right)}}}}{\frac{\overset{\rightarrow}{F}}{m_{b}} = \left. \overset{.}{\overset{\rightarrow}{v}} \middle| {}_{b}{{+ \overset{\rightarrow}{\omega}} \times \overset{\rightarrow}{v}} \right.}} & (2.13) \end{matrix}$ where {right arrow over (F)} refers to the external forces acting on the projectile, m_(b) refers to the mass of the projectile, and {right arrow over (a)}_(s) is defined in equation (2.8). The external forces acting on the projectile are {right arrow over (F)}={right arrow over (F)} _(g) +{right arrow over (F)} _(aero) +{right arrow over (F)} _(M) +{right arrow over (F)} _(d)  (2.14) where {right arrow over (F)}_(g) refers to the gravity force vector, {right arrow over (F)}_(aero) refers to the aerodynamic drag force vector, {right arrow over (F)}_(M), refers to the Magnus force vector, and {right arrow over (F)}_(d) refers to force vectors not included in the first three terms such as disturbance force vectors. Equation (2.14) is resolved in the projectile's body frame as

$\begin{matrix} \begin{matrix} {F^{b} = \begin{bmatrix} F_{x} & F_{y} & F_{z} \end{bmatrix}^{T}} \\ {= {F_{g}^{b} + F_{aero}^{b} + F_{M}^{b} + F_{d}^{b}}} \end{matrix} & (2.15) \end{matrix}$

The gravity force vector, resolved in the projectile's body frame, is written as

$\begin{matrix} {F_{g}^{b} = {{C_{bN}F_{g}^{N}} = {C_{bN}\left\lbrack \begin{matrix} 0 & 0 & \left. g_{E} \right\rbrack^{T} \end{matrix} \right.}}} & (2.16) \end{matrix}$ where g _(E)=9.81 m/s²  (2.17)

The aerodynamic drag force vector, resolved in the projectile's body frame, is written as

$\begin{matrix} {F_{aero}^{b} = {{- \frac{1}{2}}\rho\; S{\overset{->}{v}}\left( {{C_{D,{xyz}}v^{b}} + {\overset{\_}{c}C_{\omega,{xyz}}\omega^{b}}} \right)}} & (2.18) \end{matrix}$ where ρ refers to the air density, S refers to the cross-sectional area of the projectile, c projectile chord length (typically the projectile's diameter), and C_(D,xyz),C_(ω,xyz) refer to 3×3 matrices of aerodynamic force coefficients. The matrices of aerodynamic force coefficients are written as follows

$\begin{matrix} {{C_{D,{xyz}} = \begin{bmatrix} C_{D\; 0} & 0 & 0 \\ 0 & C_{L\;\alpha} & 0 \\ 0 & 0 & C_{L\;\alpha} \end{bmatrix}}{C_{\omega,{xyz}} = 0}} & (2.19) \end{matrix}$ where C_(D0) refers to the projectile's drag coefficient at angle of attack and C_(Lα) refers to the projectile's side force drag coefficient. The projectile's side force drag coefficient is set equal to the projectile's normal force coefficient, since it is assumed that that the projectile's cross-sectional area is circular. The projectile's angle of attack is α and the projectile's sideslip angle is β. The angles α and β are related to the projectile's velocity vector using the following two assumptions 1) ∥{right arrow over (v)}∥≈v_(x) and 2) α and β are expressed using small angle assumptions. Then α, β and {right arrow over (v)} are written as

$\begin{matrix} {{\alpha \approx \frac{v_{z}}{v_{x}}}{\beta \approx \frac{v_{y}}{v_{x}}}{\frac{v^{b}}{\overset{\rightarrow}{v}} \approx {\begin{bmatrix} 1 & \beta & \alpha \end{bmatrix}^{T}.}}} & (2.20) \end{matrix}$

Equations (2.19) and (2.20) are substituted into equation (2.18), and the aerodynamic drag force vector is rewritten as

$\begin{matrix} {F_{aero}^{b} = {{- \frac{1}{2}}\rho\; S{{{\overset{\rightarrow}{v}}^{2}\begin{bmatrix} C_{D\; 0} \\ {C_{L\;\alpha}\beta} \\ {C_{L\;\alpha}\alpha} \end{bmatrix}}.}}} & (2.21) \end{matrix}$ Since α and β are assumed to be small angles α², β²≈0. The gravity force vector and aerodynamic drag force vector are assumed to be the only external force vectors acting on the projectile so that {right arrow over (F)} _(M)=0 {right arrow over (F)} _(d)=0.  (2.22)

The rotational equations of motion of the projectile about its center of mass are {right arrow over (G)}={right arrow over (J)}·{right arrow over ({dot over (ω)}| _(b)+{right arrow over (ω)}×({right arrow over (J)}·{right arrow over (ω)})  (2.23) where {right arrow over (G)} refers to the external torques acting on the projectile's center of mass. Equation (2.23) is resolved in the projectile's body frame, so {dot over (ω)}^(b) =J _(b) ⁻¹ G ^(b) −J _(b) ⁻¹ω^(bx) J _(b)ω^(b)  (2.24)

The external torques acting on the projectile's center of mass are {right arrow over (G)}={right arrow over (r)} _(p) ×{right arrow over (F)} _(aero) +{right arrow over (r)} _(M) ×{right arrow over (F)} _(M) +{right arrow over (G)} _(aero) +{right arrow over (G)} _(d)  (2.25) where {right arrow over (r)}_(p) refers to the position vector of the projectile's center of pressure relative to the projectile's center of mass, {right arrow over (r)}_(M) refers to the position vector of the projectile's center of Magnus force relative to the projectile's center of mass, {right arrow over (G)}_(aero) refers to the aerodynamic torque vector, and refers to torque vectors not included in the first three terms such as disturbance torque vectors. Equation (2.25) is resolved in the projectile's body frame, so

$\begin{matrix} \begin{matrix} {G^{b} = \begin{bmatrix} G_{x} & G_{y} & G_{z} \end{bmatrix}^{T}} \\ {= {{r_{p}^{b \times}F_{aero}^{b}} + {r_{M}^{b \times}F_{M}^{b}} + G_{aero}^{b} + {G_{d}^{b}.}}} \end{matrix} & (2.26) \end{matrix}$

The projectile's center of pressure is assumed to lie along the projectile's {circumflex over (x)}_(b)-axis so that

$\begin{matrix} {r_{p}^{b} = \left\lbrack \begin{matrix} r_{px} & 0 & {\left. 0 \right\rbrack^{T}.} \end{matrix} \right.} & (2.27) \end{matrix}$

The torque acting on the projectile's center of mass due to the aerodynamic drag force vector, resolved in the projectile's body frame, is written by substituting equations (2.21) and (2.27) into equation (2.26)

$\begin{matrix} \begin{matrix} {{r_{p}^{b \times}F_{aero}^{b}} = {{- \frac{1}{2}}\rho\; S{{{\overset{\rightarrow}{v}}^{2}\begin{bmatrix} r_{px} \\ 0 \\ 0 \end{bmatrix}}^{\times}\begin{bmatrix} C_{D\; 0} \\ {C_{L\;\alpha}\beta} \\ {C_{L\;\alpha}\alpha} \end{bmatrix}}}} \\ {= {{- \frac{1}{2}}\rho\; S{{\overset{\rightarrow}{v}}^{2}\begin{bmatrix} 0 \\ {{- r_{px}}C_{L\;\alpha}\alpha} \\ {r_{px}C_{L\;\alpha}\beta} \end{bmatrix}}}} \end{matrix} & (2.28) \end{matrix}$

The torque acting on the projectile's center of mass due to the gravity force vector is assumed to be the only external torque vector acting on the projectile's center of mass so that

$\begin{matrix} \begin{matrix} {{\overset{->}{r} \times {\overset{->}{F}}_{M}} = \overset{->}{0}} \\ {{\overset{->}{G}}_{aero} = \overset{->}{0}} \\ {{\overset{->}{G}}_{d} = \overset{->}{0}} \end{matrix} & (2.29) \end{matrix}$

The equations relating the accelerometer measurements to the projectile's kinematic and dynamic variables are now derived. Specifically, the projectile's acceleration and external force components measured by the single axis accelerometer aligned with the sensor's {circumflex over (x)}_(s)-axis are derived. In general,

$\begin{matrix} {{\overset{\rightarrow}{f}}_{s} = {{\overset{\rightarrow}{a}}_{s} - \frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}}} & (2.30) \end{matrix}$ where {right arrow over (f)}_(s) refers to the accelerometer measurements. Equation (2.8) is substituted into equation (2.30), and {right arrow over (f)}_(s) is rewritten as

$\begin{matrix} {{\overset{\rightarrow}{f}}_{s} = {{\overset{.}{\overset{\rightarrow}{v}}{_{b}{+ \overset{.}{\overset{\rightarrow}{\omega}}}}_{b} \times {\overset{\rightarrow}{r}}_{s}} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} + {\overset{\rightarrow}{\omega} \times \left( {\overset{\rightarrow}{\omega} \times {\overset{\rightarrow}{r}}_{s}} \right)} - {\frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}.}}} & (2.31) \end{matrix}$

By appealing to the vector identity {right arrow over (u)}×({right arrow over (v)}×{right arrow over (w)})=({right arrow over (u)}·{right arrow over (w)}){right arrow over (v)}−({right arrow over (w)}{right arrow over (u)}){right arrow over (v)},  (2.32) equation (2.31) is rewritten as

$\begin{matrix} {{\overset{\rightarrow}{f}}_{s} = {{\overset{.}{\overset{\rightarrow}{v}}{_{b}{+ \overset{.}{\overset{\rightarrow}{\omega}}}}_{b} \times {\overset{\rightarrow}{r}}_{s}} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} - {\left( {{{\overset{\rightarrow}{\omega} \cdot \overset{\rightarrow}{\omega}}\overset{\rightarrow}{I}} - {\overset{\rightarrow}{\omega}\mspace{11mu}\overset{\rightarrow}{\omega}}} \right){\overset{\rightarrow}{r}}_{s}} - \frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}}} & (2.33) \\ {{\overset{\rightarrow}{f}}_{s} = {{\overset{.}{\overset{\rightarrow}{v}}{_{b}{+ \overset{.}{\overset{\rightarrow}{\omega}}}}_{b} \times {\overset{\rightarrow}{r}}_{s}} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} + {\overset{\rightarrow}{\omega} \times \left( {\overset{\rightarrow}{\omega} \times {\overset{\rightarrow}{r}}_{s}} \right)} - {\frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}.}}} & (2.31) \end{matrix}$

By appealing to the vector identity {right arrow over (u)}×({right arrow over (v)}×{right arrow over (w)})=({right arrow over (u)}·{right arrow over (w)}){right arrow over (v)}−({right arrow over (w)}{right arrow over (u)}){right arrow over (v)},  (2.32) equation (2.31) is rewritten as

$\begin{matrix} {{\overset{\rightarrow}{f}}_{s} = {{\overset{.}{\overset{\rightarrow}{v}}{_{b}{+ \overset{.}{\overset{\rightarrow}{\omega}}}}_{b} \times {\overset{\rightarrow}{r}}_{s}} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} - {\left( {{{\overset{\rightarrow}{\omega} \cdot \overset{\rightarrow}{\omega}}\overset{\rightarrow}{I}} - {\overset{\rightarrow}{\omega}\mspace{11mu}\overset{\rightarrow}{\omega}}} \right){\overset{\rightarrow}{r}}_{s}} - {\frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}.}}} & (2.33) \end{matrix}$

Equation (2.33) indicates that {right arrow over (f)}_(s) is a function of the body derivatives of the velocity vector and angular velocity vector. Substituting these derivative vector terms using the kinematic and dynamic equations developed above, {right arrow over (f)}_(s) is written as a function of the velocity vector and the angular velocity vector. Therefore, the accelerometer measurements are functions of the projectile's velocity and angular velocity.

By substituting equations (2.7), (2.13), (2.14), and (2.22) into equation (2.33), then {right arrow over (f)}_(s) is rewritten as

$\begin{matrix} \begin{matrix} {{\overset{\rightarrow}{f}}_{s} = \left. {\left( {\frac{{\overset{\rightarrow}{F}}_{g} + {\overset{\rightarrow}{F}}_{aero} + {\overset{\rightarrow}{F}}_{M} + {\overset{\rightarrow}{F}}_{d}}{m_{b}} - {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}}} \right) + \overset{.}{\overset{\rightarrow}{\omega}}} \middle| {}_{b} \times \right.} \\ {{\overset{\rightarrow}{r}}_{s} + {\overset{\rightarrow}{\omega} \times \overset{\rightarrow}{v}} - {\left( {{{\overset{\rightarrow}{\omega} \cdot \overset{\rightarrow}{\omega}}\overset{\rightarrow}{I}} - {\overset{\rightarrow}{\omega}\mspace{11mu}\overset{\rightarrow}{\omega}}} \right){\overset{\rightarrow}{r}}_{s}} - \frac{{\overset{\rightarrow}{F}}_{g}}{m_{b}}} \\ {= \left. {\frac{{\overset{\rightarrow}{F}}_{aero}}{m_{b}} + \overset{.}{\overset{\rightarrow}{\omega}}} \middle| {}_{b}{{\times {\overset{\rightarrow}{r}}_{s}} - {\left( {{{\overset{\rightarrow}{\omega} \cdot \overset{\rightarrow}{\omega}}\overset{\rightarrow}{I}} - {\overset{\rightarrow}{\omega}\mspace{11mu}\overset{\rightarrow}{\omega}}} \right){{\overset{\rightarrow}{r}}_{s}.}}} \right.} \end{matrix} & (2.34) \end{matrix}$

Equation (2.34) indicates that the projectile's velocity vector affects the accelerometer measurements through the aerodynamic drag force vector. Equation (2.34) is resolved in the projectile's body frame, so that:

$\begin{matrix} {f_{s}^{b} = {\frac{F_{aero}^{b}}{m_{b}} + {{\overset{.}{\omega}}_{b}^{b \times}r_{s}^{b}} - {\left( {{\omega_{b}^{bT}\omega_{b}^{b}I} - {\omega_{b}^{b}\omega_{b}^{bT}}} \right){r_{s}^{b}.}}}} & (2.35) \end{matrix}$

Substituting equation (2.24) into equation (2.35), allows {right arrow over (f)}_(s) to be rewritten as:

$\begin{matrix} \begin{matrix} {f_{s}^{b} = {\frac{F_{aero}^{b}}{m_{b}} + {\left( {{J_{b}^{- 1}G^{b}} - {J_{b}^{- 1}\omega^{b \times}J_{b}\omega^{b}}} \right)^{\times}r_{s}^{b}} -}} \\ {\left( {{\omega_{b}^{bT}\omega_{b}^{b}I} - {\omega_{b}^{b}\omega_{b}^{bT}}} \right)r_{s}^{b}} \\ {= {\frac{F_{aero}^{b}}{m_{b}} + {\left( {\left( {{J_{b}^{- 1}G^{b}} - {J_{b}^{- 1}\omega^{b \times}J_{b}\omega^{b}}} \right)^{\times} - {\omega_{b}^{bT}\omega_{b}^{b}I} + {\omega_{b}^{b}\omega_{b}^{bT}}} \right){r_{s}^{b}.}}}} \end{matrix} & (2.36) \end{matrix}$

The single axis accelerometer is aligned with the projectile's {circumflex over (x)}_(b)-axis. However, accelerometer misalignment with the projectile's {circumflex over (x)}_(b)-axis introduces the projectile's spin rate components into the accelerometer measurements, equation (2.10). In its scalar component form as resolved in F_(b), the single axis accelerometer aligned with the projectile's {circumflex over (x)}_(b)-axis measures the following aerodynamic drag force and angular velocity components.

$\begin{matrix} \begin{matrix} {f_{s}^{b} = {\frac{\rho\; S{\overset{\rightarrow}{v}}^{2}C_{D\; 0}}{2m_{b}} + {{\begin{bmatrix} 1 \\ ɛ_{y} \\ ɛ_{z} \end{bmatrix}^{T}\begin{bmatrix} {J_{x}^{- 1}\left( {G_{x} - {\omega_{y}{\omega_{z}\left( {J_{z} - J_{y}} \right)}}} \right)} \\ {J_{y}^{- 1}\left( {G_{y} - {\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}} \right)} \\ {J_{z}^{- 1}\left( {G_{z} - {\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}} \right)} \end{bmatrix}}^{\times}\begin{bmatrix} r_{x} \\ r_{y} \\ r_{z} \end{bmatrix}} +}} \\ {{\begin{bmatrix} 1 \\ ɛ_{y} \\ ɛ_{z} \end{bmatrix}^{T}\begin{bmatrix} {{- \omega_{y}^{2}} - \omega_{z}^{2}} & {\omega_{x}\omega_{y}} & {\omega_{x}\omega_{z}} \\ {\omega_{x}\omega_{y}} & {{- \omega_{x}^{2}} - \omega_{z}^{2}} & {\omega_{y}\omega_{z}} \\ {\omega_{x}\omega_{z}} & {\omega_{y}\omega_{z}} & {{- \omega_{x}^{2}} - \omega_{y}^{2}} \end{bmatrix}}\begin{bmatrix} r_{x} \\ r_{y} \\ r_{z} \end{bmatrix}} \\ {= {\frac{\rho\; S{\overset{\rightarrow}{v}}^{2}C_{D\; 0}}{2m_{b}} + \begin{bmatrix} 1 \\ ɛ_{y} \\ ɛ_{z} \end{bmatrix}^{T}}} \\ {\begin{bmatrix} {{{- {J_{z}^{- 1}\left( {G_{z} - {\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}} \right)}}r_{y}} + {{J_{y}^{- 1}\left( {G_{y\;} - {\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}} \right)}r_{z}}} \\ {{{J_{z}^{- 1}\left( {G_{z} - {\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}} \right)}r_{x}} - {{J_{x}^{- 1}\left( {G_{x\;} - {\omega_{y}{\omega_{z}\left( {J_{z} - J_{y}} \right)}}} \right)}r_{z}}} \\ {{{- {J_{y}^{- 1}\left( {G_{y} - {\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}} \right)}}r_{x}} + {{J_{x}^{- 1}\left( {G_{x\;} - {\omega_{y}{\omega_{z}\left( {J_{z} - J_{y}} \right)}}} \right)}r_{y}}} \end{bmatrix} +} \\ {\begin{bmatrix} 1 \\ ɛ_{y} \\ ɛ_{z} \end{bmatrix}^{T}\begin{bmatrix} {{\left( {{- \omega_{y}^{2}} - \omega_{z}^{2}} \right)r_{x}} + {\omega_{x}\omega_{y}r_{y}} + {\omega_{x}\omega_{z}r_{z}}} \\ {{\omega_{x}\omega_{y}r_{x}} + {\left( {{- \omega_{x}^{2}} - \omega_{z}^{2}} \right)r_{y}} + {\omega_{y}\omega_{z}r_{z}}} \\ {{\omega_{x}\omega_{z}r_{x}} + {\omega_{y}\omega_{z}r_{y}} + {\left( {{- \omega_{x}^{2}} - \omega_{y}^{2}} \right)r_{z}}} \end{bmatrix}} \\ {f_{sx}^{b} = {{- \frac{\rho\; S{\overset{\rightarrow}{v}}^{2}C_{D\; 0}}{2m_{b}}} - {{J_{z}^{- 1}\left( {G_{z} - {\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}} \right)}r_{y}} +}} \\ {{{J_{y}^{- 1}\left( {G_{y} - {\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}} \right)}r_{z}} + {ɛ_{y}\left( {{{J_{z}^{- 1}\left( {G_{z} - {\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}} \right)}r_{x}} -} \right.}} \\ {\left. {{J_{x}^{- 1}\left( {G_{x} - {\omega_{y}{\omega_{z}\left( {J_{z} - J_{y}} \right)}}} \right)}r_{z}} \right) +} \\ {ɛ_{z}\left( {{{- {J_{y}^{- 1}\left( {G_{y\;} - {\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}} \right)}}r_{x}} +} \right.} \\ {\left. {{J_{x}^{- 1}\left( {G_{x} - {\omega_{y}{\omega_{z}\left( {J_{z} - J_{y}} \right)}}} \right)}r_{y\;}} \right) + {\left( {{- \omega_{y}^{2}} - \omega_{z}^{2}} \right)r_{x}} + {\omega_{x}\omega_{y\;}r_{y}} +} \\ {{\omega_{x}\omega_{z}r_{z}} + {ɛ_{y}\left( {{\omega_{x}\omega_{y}r_{x}} + {\left( {{- \omega_{x}^{2}} - \omega_{y}^{2}} \right)r_{y}} + {\omega_{y}\omega_{z}r_{z}}} \right)} +} \\ {ɛ_{z}\left( {{\omega_{x}\omega_{z}r_{x}} + {\omega_{y}\omega_{z}r_{y}} + {\left( {{- \omega_{x}^{2}} - \omega_{y}^{2}} \right)r_{z}}} \right)} \end{matrix} & (2.38) \end{matrix}$

Equations (2.12) and (2.28) are substituted into equation (2.38), so

$\begin{matrix} \begin{matrix} {f_{sx}^{b} \approx {{- \frac{\rho\; S{\overset{\rightarrow}{v}}^{2}C_{D\; 0}}{2m_{b}}} + {\frac{\rho\; S{\overset{\rightarrow}{v}}^{2}r_{px}C_{L\;\alpha}\beta}{2J_{z}}r_{y}} +}} \\ {{\frac{\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}{J_{z}}r_{y}} + {\frac{\rho\; S{\overset{\rightarrow}{v}}^{2}r_{px}C_{L\;\alpha}\alpha}{2J_{y}}r_{z}} -} \\ {{\frac{\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}{J_{y}}r_{z}} + {\left( {{- \omega_{y}^{2}} - \omega_{z}^{2}} \right)r_{x}} + {\omega_{x}\omega_{y}r_{y}} +} \\ {{\omega_{x}\omega_{z}r_{z}} + {ɛ_{y}\left( {{\frac{G_{z\;}}{J_{z}}r_{x}} - {\frac{\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}{J_{z}}r_{x}} +} \right.}} \\ {\left. {{\omega_{x}\omega_{y}r_{x}} + {\left( {{- \omega_{x}^{2}} - \omega_{z}^{2}} \right)r_{y}} + {\omega_{y}\omega_{z}r_{z}}} \right) +} \\ {ɛ_{z}\left( {{\frac{G_{y\;}}{J_{y}}r_{x}} + {\frac{\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}{J_{y}}r_{x}} +} \right.} \\ {\left. {{\omega_{x}\omega_{z}r_{x}} + {\omega_{y}\omega_{z}r_{y}} + {\left( {{- \omega_{x}^{2}} - \omega_{y}^{2}} \right)r_{z}}} \right).} \end{matrix} & (2.39) \end{matrix}$

The projectile is assumed to be spin stabilized about its minor axis so equation (2.12) is satisfied, and

$\begin{matrix} {{{\omega_{x}^{2}r_{y}}\operatorname{>>}{{\frac{G_{z}}{J_{z}}r_{x}} - {\frac{\omega_{x}{\omega_{y}\left( {J_{y} - J_{x}} \right)}}{J_{z}}r_{x}} + {\omega_{x}\omega_{y}r_{x}} - {\omega_{z}^{2}r_{y}} + {\omega_{y}\omega_{z}r_{z}}}}{{\omega_{x}^{2}r_{z}}\operatorname{>>}{{{{- \frac{G_{y}}{J_{y}}}r_{x}} + {\frac{\omega_{x}{\omega_{z}\left( {J_{x} - J_{z}} \right)}}{J_{y}}r_{x}} + {\omega_{x}\omega_{z}r_{x}} + {\omega_{y}\omega_{z}r_{y}} + {\omega_{y}^{2}r_{z}\frac{J_{y} - J_{x}}{J_{z}}}} = {\frac{J_{z} - J_{x}}{J_{y}} \approx 1.}}}} & (2.40) \end{matrix}$

Equation (2.40) is substituted into equation (2.39), so

$\begin{matrix} {f_{sx}^{b} \approx {{- \frac{\rho\; S{\overset{->}{v}}^{2}C_{D\; 0}}{2m_{b}}} + {\frac{\rho\; S{\overset{->}{v}}^{2}r_{px}C_{L\;\alpha}}{2J_{z}}\left( {{\beta\; r_{y}} + {\alpha\; r_{z}}} \right)} - {\left( {\omega_{y}^{2} + \omega_{z}^{2}} \right)r_{x}} + {2{\omega_{x}\left( {{\omega_{y}r_{y}} + {\omega_{z}r_{z}}} \right)}} - {{\omega_{x}^{2}\left( {{ɛ_{y}r_{y}} + {ɛ_{z}r_{z}}} \right)}.}}} & (2.41) \end{matrix}$

Equation (2.41) indicates that the accelerometer measurements include both low-frequency components and high-frequency components. The accelerometer measurements are low- and high-pass filtered, so

$\begin{matrix} \begin{matrix} {{\text{low-pass}\left( f_{sx}^{b} \right)} \approx {{- \frac{\rho\; S{\overset{->}{v}}^{2}C_{D\; 0}}{2m_{b}}} - {\left( {\omega_{y}^{2} + \omega_{z}^{2}} \right)r_{x}} -}} \\ {\omega_{x}^{2}\left( {{ɛ_{y}r_{y}} + {ɛ_{z}r_{z}}} \right)} \\ {{\text{high-pass}\left( f_{sx}^{b} \right)} \approx {{\frac{\rho\; S{\overset{->}{v}}^{2}r_{px}C_{L\;\alpha}}{2J_{z}}\left( {{\beta\; r_{y}} + {\alpha\; r_{z}}} \right)} +}} \\ {2\;{{\omega_{x}\left( {{\omega_{y}r_{y}} + {\omega_{z}r_{z}}} \right)}.}} \end{matrix} & (2.42) \end{matrix}$

The side force drag coefficient is assumed to be 0, so C _(Lα)=0.  (2.43)

Then equation (2.42) is rewritten as

$\begin{matrix} \begin{matrix} {{{low}\text{-}{{pass}\left( f_{sx}^{b} \right)}} \approx {{- \frac{\rho\; S{\overset{->}{v}}^{2}C_{D\; 0}}{2m_{b}}} -}} \\ {{\left( {\omega_{y}^{2} + \omega_{z}^{2}} \right)r_{x}} - {\omega_{x}^{2}\left( {{ɛ_{y}r_{y}} + {ɛ_{z}r_{z}}} \right)}} \\ {\approx {{- \frac{\rho\; S{\overset{->}{v}}^{2}C_{D\; 0}}{2m_{b}}} - {\left( {\omega_{y}^{2} + \omega_{z}^{2}} \right)r_{x}}}} \\ {{{h{igh}}\text{-}{{pass}\left( f_{sx}^{b} \right)}} \approx {2{{\omega_{x}\left( {{\omega_{y}r_{y}} + {\omega_{z}r_{z}}} \right)}.}}} \end{matrix} & (2.44) \end{matrix}$

The term ω_(x) ²(ε_(y)r_(y)+ε_(z)r_(z)) is an error component due to accelerometer mounting misalignment within the projectile.

Since a number of assumptions and simplifications were used to derive equations (2.41) and (2.44), a verification process is described. The true accelerometer measurements and the filtered accelerometer components are plotted to verify that the filtered components capture the dynamics of the true accelerometer measurements. FIG. 4 shows the plots of the true accelerometer measurements 340 and the low-pass filtered accelerometer measurements 350 (Equation 2.44) for a 155 mm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz. As is shown in FIG. 4, the low-pass filtered component of the accelerometer measurements 350 are dominated by the aerodynamic drag force.

The vector matching algorithm 133 for the attitude estimator module 130 in the apparatus 10 or 11 is now derived. As described above, the first objective of this report is to design an attitude and heading angle reference system for a fast spinning projectile using Wahba's problem, or vector matching. This objective can be restated as computing the attitude and heading angle of a fast spinning projectile using vector matching. This computation is done based on the measurements from the three-axis magnetometer 110 and the single axis accelerometer 120 aligned with the projectile's spin axis X_(p). The solution of Wahba's problem, equation (1.1), is

$\begin{matrix} {{C_{bN}\begin{bmatrix} \frac{v^{N}}{v^{N}} & \frac{m^{N}}{m^{N}} & {\frac{v^{N \times}}{v^{N}}\frac{m^{N}}{m^{N}}} \end{bmatrix}} = \begin{bmatrix} \frac{v^{b}}{v^{b}} & \frac{m^{b}}{m^{b}} & {\frac{v^{b \times}}{v^{b}}\frac{m^{b}}{m^{b}}} \end{bmatrix}} & (3.1) \\ {C_{bN} = {\begin{bmatrix} \frac{v^{b}}{v^{b}} & \frac{m^{b}}{m^{b}} & {\frac{v^{b \times}}{v^{b}}\frac{m^{b}}{m^{b}}} \end{bmatrix}\begin{bmatrix} \frac{v^{N}}{v^{N}} & \frac{m^{N}}{m^{N}} & {\frac{v^{N \times}}{v^{N}}\frac{m^{N}}{m^{N}}} \end{bmatrix}}^{- 1}} & \; \\ {\mspace{79mu}{\left\lbrack {U,\Sigma,V} \right\rbrack = {{svd}\left( C_{bN} \right)}}} & \; \\ {\mspace{79mu}{C_{bN\_ final} = {{UV}^{- 1}.}}} & \; \end{matrix}$

The term svd shown in equation 3.1 is referred to herein as a singular value decomposition that is used to calculate generate a direction cosine matrix C_(bN) _(—) _(final) from the direction cosine matrix C_(bN) calculated to solve Wahba's problem in order to enforce orthogonality constraints on the direction cosine matrix C_(bN) calculated to solve Wahba's problem. The projectile's attitude and heading angle are computed from C_(bN) _(—) _(final). Equation (3.1) requires the following information to compute C_(bN) _(—) _(final): 1) the magnitude and direction of the local Earth magnetic field vector in the projectile's body frame; 2) the magnitude and direction of the local Earth magnetic field vector in the NED frame; 3) the magnitude and direction of the projectile's velocity vector in the projectile's body frame; and 4) the magnitude and direction of the projectile's velocity vector in the NED frame.

The methodology required to use the local Earth magnetic field vector in the vector matching algorithm 133 is now described. The vector matching algorithm 133 requires the components of the local Earth magnetic field vector resolved in both the projectile's body frame and the NED frame. The measurements from the three-axis magnetometer 110 provide the components of the local Earth magnetic field vector resolved in the projectile's body frame because the axes of the sensor measurement frame are aligned with the axes of the projectile's body frame. The magnetometer measurements are assumed to be calibrated.

The vector matching algorithm 133 requires the magnitude and direction of the projectile's velocity vector in the NED frame and the projectile's body frame. The methodology required to compute the magnitude of the projectile's velocity vector, the direction of the projectile's velocity vector in the NED frame, and the direction of the projectile's velocity vector in the projectile's body frame is now described.

The magnitude of the projectile's velocity vector is determined from the accelerometer measurement equation, equation (2.41). FIG. 4 shows that the low-pass filtered accelerometer measurements are governed by the aerodynamic drag force vector. Therefore, the low-pass filtered accelerometer measurements are rewritten as

$\begin{matrix} {{\text{low-pass}\left( {f_{sx}^{b}(t)} \right)} \approx {- \frac{\rho\; S{{\overset{->}{v}(t)}}^{2}C_{D\; 0}}{2m_{b}}}} & (3.2) \end{matrix}$ Equation (3.2) is rearranged as:

$\begin{matrix} {{{\overset{\hat{->}}{v}(t)}} = \sqrt{- \frac{2m_{b}\text{low-pass}\left( {f_{sx}^{b}(t)} \right)}{\rho\;{SC}_{D\; 0}}}} & (3.3) \end{matrix}$ where ∥{right arrow over ({circumflex over (v)}∥ refers to the magnitude of the projectile's velocity vector computed by low-pass filtering the accelerometer measurements. Equation (3.3) indicates that the aerodynamic drag force vector is the key component of the accelerometer measurements used to estimate the magnitude of the projectile's velocity vector.

The direction of the projectile's velocity vector in the projectile's NED frame is now determined. FIG. 5 shows an exemplary unit velocity vector on the unit sphere 200 for a projectile 100 in accordance with the present invention. The tip of the unit velocity vector

$\frac{v^{N}}{v^{N}}$ is constrained to lie on the surface of an exemplary unit sphere 200 so that:

$\begin{matrix} {{\frac{v^{N}}{v^{N}} \cdot \frac{v^{N}}{v^{N}}} = 1.} & (3.4) \end{matrix}$

FIG. 6 shows a flight path angle for an exemplary projectile in accordance with the present invention. The tip of the unit vector

$\frac{v^{N}}{v^{N}}$ is constrained to lie in the plane defined by the projectile's flight path angle, γ.

$\begin{matrix} \begin{matrix} {{\frac{g^{N}}{g^{N}} \cdot \left( {- \frac{v^{N}}{v^{N}}} \right)} = {\cos\left( {{90{^\circ}} - \gamma} \right)}} \\ {= {\sin\;\gamma}} \\ {{\frac{g^{N}}{g^{N}} \cdot \frac{v^{N}}{v^{N}}} = {{- \sin}\;{\gamma.}}} \end{matrix} & (3.5) \end{matrix}$

The plane defined by γ and the unit sphere 200 intersect in a circle. Therefore, the projectile's flight path angle constrains the tip of the unit vector

$\frac{v^{N}}{v^{N}}$ to lie on the intersection of the plane at vertical distance sin γ from the center C_(sphere) of the unit sphere 200 and the sphere 200. The projectile's flight path angle γ is computed from the accelerometer measurements. The governing equation for flight path angle is

$\begin{matrix} {{{\overset{\overset{.}{\hat{}}}{\gamma}(t)} = {- \frac{g_{E}\cos\;{\hat{\gamma}(t)}}{{\overset{\hat{->}}{v}(t)}}}}{{\gamma(0)} \equiv \text{projectile launch angle.}}} & (3.6) \end{matrix}$

Equation 2.17 defines g_(E). ∥{right arrow over ({circumflex over (v)}∥ is determined from the low-pass filtered accelerometer measurements, and γ(0) is determined from accelerometer measurements just prior to projectile launch.

Since a number of assumptions and simplifications were made in order to derive ∥{right arrow over ({circumflex over (v)}∥ in equation (3.6) the projectile's true flight path angle and estimated flight path angle are plotted to verify that the projectile's estimated speed captures the dynamics of the projectile's true speed. FIG. 7 shows the plots of the true flight path angle and estimated flight path angle for a 155 mm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz. A 4^(th)-order low-pass filter was used to estimate the projectile's speed from the aerodynamic drag force component of the accelerometer measurements

$\begin{matrix} {{\text{low-pass}\left( {f_{sx}^{b}(t)} \right)} = {\frac{40^{4}}{\left( {s + 40} \right)^{4}}{{f_{sx}^{b}(t)}.}}} & (3.7) \end{matrix}$

The plots in FIG. 7 indicate that during ascent of the projectile 100 sin γ>0 and during the descent of the projectile 100 the sin γ<0.

The tip of the unit vector

$\frac{v^{N}}{v^{N}}$ is constrained to lie in the plane defined by the local Earth magnetic field vector. The projectile's velocity vector resolved in the projectile's body frame is assumed to be in the same direction as the projectile's angular velocity vector resolved in the projectile's body frame, so

$\begin{matrix} {{\frac{v^{N}}{v^{N}} \cdot \frac{m^{N}}{m^{N}}} = {{\frac{v^{b}}{v^{b}} \cdot \frac{m^{b}}{m^{b}}} \approx {\frac{m^{b}}{m^{b}} \cdot \frac{\omega^{b}}{\omega^{b}}} \approx \frac{m_{x}}{m^{b}}}} & (3.8) \end{matrix}$ where

$\begin{matrix} {m^{b} = \left\lbrack \begin{matrix} m_{x} & m_{y} & {\left. m_{z} \right\rbrack^{T}.} \end{matrix} \right.} & (3.9) \end{matrix}$

The dot product operator is independent of reference frame. Equations (3.5) and (3.8) are combined, so

$\begin{matrix} {{\begin{bmatrix} \frac{g^{NT}}{g^{N}} \\ \frac{m^{NT}}{m^{N}} \end{bmatrix}\frac{v^{N}}{v^{N}}} = \begin{bmatrix} {{- \sin}\;\gamma} \\ \frac{m_{x}}{m^{b}} \end{bmatrix}} & (3.10) \end{matrix}$

The tip of the unit vector

$\frac{v^{N}}{v^{N}}$ must lie on the unit sphere and the two planes defined by equation (3.10). The intersection of two planes is a line. In general, a line intersects a sphere at either two points, 1 point, or no points. In this case, the line defined by equation (3.10) intersects the unit sphere at two points. The two points indicate the possible directions of the projectile's velocity vector resolved in the projectile's inertial frame. One of the two points is selected based on the projectile's launch direction (East or West) relative to the direction of the local Earth magnetic field vector. The two possible directions of the unit vector

$\frac{v^{N}}{v^{N}}$ are determined, first, by computing the equation of the line defined by equation (3.10) and, second, by computing the intersection points of the line with the unit sphere.

The equation of a line is written as A(v _(po int) +v _(par))=y  (3.11) where

$\begin{matrix} \begin{matrix} {A = \begin{bmatrix} \frac{g^{N}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{bmatrix}^{T}} \\ {y = \begin{bmatrix} {{- \sin}\;\gamma} \\ \frac{m_{x}}{m^{b}} \end{bmatrix}} \\ {\frac{v^{N}}{v^{N}} = {v_{point} + {v_{par}.}}} \end{matrix} & (3.12) \end{matrix}$ and where v_(po int)εR(A) the homogeneous solution and v_(par)εN(A) refers to the particular solution. The homogeneous solution v_(po int) is determined directly from equation (3.11) v _(po int) =A ^(T)(AA ^(T))⁻¹ y.  (3.13)

The matrix AA^(T) is

$\begin{matrix} \begin{matrix} {{AA}^{T} = {\begin{bmatrix} \frac{g^{N}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{bmatrix}^{T}\begin{bmatrix} \frac{g^{N}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{bmatrix}}} \\ {= {\begin{bmatrix} 1 & \begin{matrix} \frac{g^{NT}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{matrix} \\ \begin{matrix} \frac{m^{NT}}{m^{N}} & \frac{g^{N}}{g^{N}} \end{matrix} & 1 \end{bmatrix}.}} \end{matrix} & (3.14) \end{matrix}$

The determinant of AA^(T) is

$\begin{matrix} \begin{matrix} {{\det\left( {AA}^{T} \right)} = {1 - \begin{pmatrix} \frac{g^{NT}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{pmatrix}^{2}}} \\ {= {1 - {\left( {\frac{g^{N}}{g^{N}} \cdot \frac{m^{N}}{m^{N}}} \right)^{2}.}}} \end{matrix} & (3.15) \end{matrix}$

The angle α is defined as the angle between {right arrow over (g)} and {right arrow over (m)} resolved in the projectile's body frame, so

$\begin{matrix} \begin{matrix} {{\det\left( {AA}^{T} \right)} = {1 - {\cos^{2}\alpha}}} \\ {= {\sin^{2}\alpha}} \\ {= {{\frac{g^{N}}{g^{N}} \times \frac{m^{N}}{m^{N}}}}^{2}} \\ {= {{\overset{->}{b}}^{2}.}} \end{matrix} & (3.16) \end{matrix}$

The inverse of AA^(T) is

$\begin{matrix} \begin{matrix} {\left( {AA}^{T} \right)^{- 1} = {\frac{1}{\det\left( {AA}^{T} \right)}{{cov}\left( {AA}^{T} \right)}}} \\ {= {{\frac{1}{{\overset{->}{b}}^{2}}\begin{bmatrix} 1 & {{- \frac{m^{NT}}{m^{N}}}\frac{g^{N}}{g^{N}}} \\ {{- \frac{g^{NT}}{g^{N}}}\frac{m^{N}}{m^{N}}} & 1 \end{bmatrix}}.}} \end{matrix} & (3.17) \end{matrix}$

Equations (3.12) and (3.17) are substituted into equation (3.13), so

$\begin{matrix} \begin{matrix} {v_{point} = {{\frac{1}{{\overset{->}{b}}^{2}}\begin{bmatrix} \frac{g^{N}}{g^{N}} & \frac{m^{N}}{m^{N}} \end{bmatrix}}\begin{bmatrix} 1 & {{- \frac{m^{NT}}{m^{N}}}\frac{g^{N}}{g^{N}}} \\ {{- \frac{g^{NT}}{g^{N}}}\frac{m^{N}}{m^{N}}} & 1 \end{bmatrix}}} \\ {\begin{bmatrix} {{- \sin}\;\gamma} \\ \frac{m_{x}}{m^{b}} \end{bmatrix}} \\ {= {\frac{1}{{\overset{->}{b}}^{2}}\left\lbrack {\frac{g^{N}}{g^{N}} - {\frac{g^{NT}}{g^{N}}\frac{m^{N}}{m^{N}}\frac{m^{N}}{m^{N}}} -} \right.}} \\ {{\left. {{\frac{m^{NT}}{m^{N}}\frac{g^{N}}{g^{N}}\frac{g^{N}}{g^{N}}} + \frac{m^{N}}{m^{N}}} \right\rbrack\begin{bmatrix} {{- \sin}\;\gamma} \\ \frac{m_{x}}{m^{b}} \end{bmatrix}}.} \end{matrix} & (3.18) \end{matrix}$

The particular solution v_(par) is determined by noting that the cross-product {right arrow over (b)}, defined in equation (3.16), is perpendicular to both unit vectors

$\frac{g^{N}}{g^{N}}$ and

$\frac{m^{N}}{m^{N}}.$

Therefore, {right arrow over (b)}εN(A) and the unit vector

$\frac{v^{N}}{v^{N}}$ are written as

$\begin{matrix} {{\frac{v^{N}}{v^{N}} = {v_{point} + {\xi\; b^{N}}}},} & (3.19) \end{matrix}$ where ξε

. The scalar ξ is determined where the line defined by equation (3.10) intersects the unit sphere

$\begin{matrix} \begin{matrix} {{\frac{v^{N}}{v^{N}} \cdot \frac{v^{N}}{v^{N}}} = 1} \\ {= {\left( {v_{point} + {\xi\; b^{N}}} \right)^{T}\left( {v_{point} + {\xi\; b^{N}}} \right)}} \\ {= {{v_{point}}^{2} + {\xi^{2}{b^{N}}^{2}}}} \\ {{\xi^{2} = \frac{1 - {v_{point}}^{2}}{{b^{N}}^{2}}},} \end{matrix} & (3.20) \end{matrix}$ where v_(po int) ^(T)b^(N)=0. Equation (3.20) is substituted into equation (3.19), then

$\begin{matrix} {\frac{v^{N}}{v^{N}} = {v_{point} \pm {\sqrt{1 - {v_{point}}^{2}}{\frac{b^{N}}{{b^{N}}^{2}}.}}}} & (3.21) \end{matrix}$

Since a number of assumptions and simplifications have been made to derive the magnitude and direction of the projectile's velocity vector resolved in the projectile's NED frame verification is now demonstrated. The components of projectile's true velocity vector and estimated velocity vector resolved in the projectile's navigation frame are plotted to verify that the projectile's estimated velocity vector captures the dynamics of the projectile's true velocity vector. FIG. 8 shows the plots of the scalar components of the true velocity vector (V_(exact x), V_(exact y), V_(exact z)) and estimated velocity vector (V_(approx x), V_(approx y), V_(approx z)) resolved in the projectile's North East Down frame for a 155 nm projectile, spin stabilized about its minor axis with a spin rate of 100 Hz. A 4^(th)-order low-pass filter was used to estimate the projectile's speed from the aerodynamic drag force component of the accelerometer measurements, equation (3.7).

The projectile's velocity vector and angular velocity vector are assumed to be aligned when resolved in the projectile's body frame, so

$\begin{matrix} {v^{b} = {{v^{b}}{\frac{\omega^{b}}{\omega^{b}}.}}} & (3.22) \end{matrix}$

The direction of the projectile's angular velocity vector in the projectile's body frame is determined as follows. Equation (2.41) is filtered by a high-pass filter, and from equations (2.42) and (2.44)

$\begin{matrix} {{\text{high-pass}\left( f_{sx}^{b} \right)} \approx {{\frac{\rho\; S{\overset{->}{v}}^{2}r_{px}C_{L\;\alpha}}{2\; J_{z}}\left( {{\beta\; r_{y}} + {\alpha\; r_{z}}} \right)} + {2{{\omega_{x}\left( {{\omega_{y}r_{y}} + {\omega_{z}r_{z}}} \right)}.}}}} & (2.42) \end{matrix}$

The origin of the sensor measurement frame is assumed to be in the {circumflex over (x)}_(b)-ŷ_(b) plane, the accelerometer measurement axis is assumed to be nominally aligned with the {circumflex over (x)}_(b)-axis, then ω_(x) dominates equation (2.42), and

$\begin{matrix} \begin{matrix} {r_{z} = 0} \\ {{\text{high-pass}\left( f_{sx}^{b} \right)} \approx {2\omega_{x}\omega_{y}r_{y}}} \\ {= {2{\omega_{x}\begin{bmatrix} 0 & r_{y} & 0 \end{bmatrix}}{\omega^{b}.}}} \end{matrix} & (3.23) \end{matrix}$

The local Earth magnetic field vector {right arrow over ({dot over (m)}={right arrow over ({dot over (m)}| _(b) +{right arrow over (ω)}×{right arrow over (m)}  (3.24) is differentiated.

The local Earth magnetic field vector is assumed to be constant throughout the projectile's flight time, so {right arrow over ({dot over (m)}={right arrow over (0)}  (3.25)

Equation (3.25) is substituted into equation (3.24), so {right arrow over ({dot over (m)}| _(b) =−{right arrow over (ω)}×{right arrow over (m)}={right arrow over (m)}×{right arrow over (ω)}  (3.26)

Equation (3.26) is resolved in the projectile's body frame, so {dot over (m)}=m ^(bx)ω^(b)  (3.27)

Equations (3.23) and (3.27) are combined, so

$\begin{matrix} {\begin{bmatrix} \frac{\text{high-pass}\left( f_{sx}^{b} \right)}{2\omega_{x}} \\ {\overset{.}{m}}^{b} \end{bmatrix} = {\begin{bmatrix} \begin{bmatrix} 0 & r_{y} & 0 \end{bmatrix} \\ m^{b \times} \end{bmatrix}\mspace{14mu}{\omega^{b}.}}} & (3.28) \end{matrix}$

By defining

$\begin{matrix} {{A = \begin{bmatrix} \left\lfloor \begin{matrix} 0 & r_{y} & 0 \end{matrix} \right\rfloor \\ m^{b \times} \end{bmatrix}}{y = \begin{bmatrix} \frac{\text{high-pass}\left( f_{sx}^{b} \right)}{2\omega_{x}} \\ {\overset{.}{m}}^{b} \end{bmatrix}}} & (3.29) \end{matrix}$ and substituting equation (3.29) into equation (3.28), then

$\begin{matrix} \begin{matrix} {{A\;\omega^{b}} = y} \\ {{A^{T}A\;\omega^{b}} = {A^{T}y}} \\ {\omega^{b} = {\left( {A^{T}A} \right)^{- 1}A^{T}{y.}}} \end{matrix} & (3.30) \end{matrix}$

The matrix A^(T)A is

$\begin{matrix} \begin{matrix} {{A^{T}A} = {\begin{bmatrix} \begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix} & {- m^{b \times}} \end{bmatrix}\begin{bmatrix} \begin{bmatrix} 0 & r_{y} & 0 \end{bmatrix} \\ m^{b \times} \end{bmatrix}}} \\ {= {{\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}}^{T} - {\left( m^{b \times} \right)^{2}.}}} \end{matrix} & (3.31) \end{matrix}$

The matrix A^(T)A is singular if {right arrow over (m)} resolved in the projectile's body frame is in the {circumflex over (x)}_(b)−{circumflex over (z)}_(b). This 3D attitude occurs twice during the projectile's rotation about the {circumflex over (x)}_(b)-axis. Therefore, a small constant ε²I is added to A^(T)A to ensure the resulting matrix is non-singular. The matrix A^(T)y is written as:

$\begin{matrix} \begin{matrix} {{A^{T}y} = {\begin{bmatrix} \begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix} & {- m^{b \times}} \end{bmatrix}\begin{bmatrix} \frac{\text{high-pass}\left( f_{sx}^{b} \right)}{2\omega_{x}} \\ {\overset{.}{m}}^{b} \end{bmatrix}}} \\ {= {{\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}\frac{\text{high-pass}\left( f_{sx}^{b} \right)}{2\omega_{x}}} + {{\overset{.}{m}}^{b \times}{m^{b}.}}}} \end{matrix} & (3.32) \end{matrix}$

Equations (3.31) and (3.32) are substituted into equation (3.30), then

$\begin{matrix} {\omega^{b} = {\left( {{\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}}^{T} - \left( m^{b \times} \right)^{2} + {ɛ^{2}I}} \right)^{- 1}{\left( {{\begin{bmatrix} 0 \\ r_{y} \\ 0 \end{bmatrix}\frac{\text{high-pass}\left( f_{sx}^{b} \right)}{2\omega_{x}}} + {{\overset{.}{m}}^{b \times}m^{b}}} \right).}}} & (3.33) \end{matrix}$

Thus, it has been shown how to determine the scalar components of the local Earth magnetic field vector and the projectile's velocity vector in the projectile's NED frame and body frame. The projectile's attitude and heading angle is computed from Ĉ_(bN) _(—) _(final) shown in equation (3.1).

FIG. 9 is a flow diagram of the vector matching algorithm 133. The input to the low-pass filter 500 and the high-pass filter 501 is f_(sx), from the single axis accelerometer 120. The magnetic field measurement m^(b) is input to the algorithm 510. The magnetic field for the inertial frame m^(N) provided or measured prior to launch of the projectile 100 is input to the algorithm 512. The algorithm 514 is used to calculate the direction of the velocity unit vector for the unit sphere and the two planes. The output of algorithm 514 is the velocity unit vector

$\frac{{\hat{v}}^{N}}{{\hat{v}}^{N}}$ in the inertial frame which is input to algorithm 522. The output of the algorithm 516 is the angular velocity vector ω^(b) in the body frame. The output from algorithm 518 is the direction of the velocity unit vector

$\frac{{\hat{v}}^{b}}{{\hat{v}}^{b}}$ in the body frame, which is input to the algorithm 520. The output of algorithm 520 times the inverse of the output of the algorithm 522 (see algorithm 524) is the direction cosine matrix C_(bN) from which the projectile's attitude and heading angle are computed.

The fast spinning projectile attitude and heading angle reference system (AHRS) algorithm (also referred to herein as attitude estimator module 130) developed above is now simulated for an exemplary embodiment of a projectile 100. The fast spinning projectile AHRS algorithm performance is evaluated in estimating the attitude and heading angle of the projectile 100, to identify the error sources of the AHRS algorithm, and to quantify the effect of the errors sources on the performance of the AHRS algorithm.

The following discussion is based on a simulation of a fast spinning projectile having the following characteristics:

$\begin{matrix} \begin{matrix} {m_{b} = {45\mspace{14mu}{kg}}} \\ {{diameter} = {0.155\mspace{14mu} m}} \\ {{length} = {0.8\mspace{14mu} m}} \\ {J = {\left\lbrack \begin{matrix} 0.136 & 0 & 0 \\ 0 & 2.483 & 0 \\ 0 & 0 & 2.483 \end{matrix} \right\rbrack\mspace{14mu}{kg}\; m^{2}}} \end{matrix} & (4.1) \\ \begin{matrix} {C_{D0} = 0.3} \\ {C_{L\;\alpha} = {2.7\text{/}{rad}}} \\ {C_{M\;\alpha} = {1\text{/}{rad}}} \\ {C_{LP} = {C_{MQ} = {C_{NR} = {{- 0.1}\mspace{14mu}{\text{rad/s}.}}}}} \end{matrix} & (4.2) \end{matrix}$

The following discussion is based on the fast spinning projectile having the following trajectory characteristics:

$\begin{matrix} \begin{matrix} {\rho = {1\mspace{14mu}{kg}\text{/}m^{3}}} \\ {{\gamma(0)} = {36{^\circ}}} \\ {{\overset{->}{v}} = {620\mspace{14mu} m\text{/}s\mspace{14mu}{in}\mspace{14mu}{\hat{x}}_{b}\text{-}{axis}\mspace{14mu}{direction}}} \\ {{\omega_{x}(0)} = {100\mspace{14mu}{{Hz}.}}} \end{matrix} & (4.3) \end{matrix}$

Since a number of assumptions and simplifications were used to derive the fast spinning projectile AHRS algorithm, the estimation error of the direction cosine matrix estimation errors computed using the vector matching algorithm 133 (shown in FIG. 9) are plotted. FIG. 10 shows the plots of the direction cosine matrix estimation error computed using the vector matching algorithm 133. The direction cosine matrix estimation error was computed as follows δC=∥I−(Ĉ _(bN) _(—) _(final))^(T) C _(bN)∥  (4.4)

FIG. 11 shows the estimation errors of the Euler Angles (φ-φ_(calc)), (θ-θ_(calc)), and (ψ-ψ_(calc)) and computed using the vector matching algorithm 133. The plot of (φ-φ_(calc)) is hidden by the plot of (ψ-ψ_(calc)) except where indicated in the region past 50 seconds. As shown in FIG. 11, the maximum Euler angle errors (φ-φ_(calc)), (θ-θ_(calc)), and (ψ-ψ_(calc)) are less than 0.1 radians for the projectile's entire flight.

The methods and techniques described here may be implemented in digital electronic circuitry, or with a processor 140 (for example, a special-purpose processor or a general-purpose processor such as a computer, microprocessor, or microcontroller) firmware, software, or in combinations of them. In one implementation, the processor 140 comprises processor support chips and/or system support chips such as application-specific integrated circuits (ASICs). Apparatus embodying these techniques may include appropriate input and output devices, a programmable processor, and a storage medium 131 tangibly embodying program instructions for execution by the programmable processor. A process embodying these techniques may be performed by a processor 140 executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may advantageously be implemented in one or more programs that are executable on a programmable system including at least one programmable processor 140 coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Generally, the processor 140 receives instructions and data from a memory 135, such as a read-only memory and/or a random access memory.

The attitude estimator module 130 (software 130) comprises a set of program instructions embodied on the storage medium 131 from which at least a portion of the program instructions are read by the processor 140 for execution thereby. The program instructions, when executed by the processor 140, carry out at least a portion of the functionality described here as being performed by the apparatus 10.

Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, USB memory devices (i.e., thumb drives) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and DVD disks. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASICs).

FIG. 12 is a flow diagram of one embodiment of a method 1200 to measure and determine a three-dimensional attitude of a spinning projectile during a flight of the spinning projectile in accordance with the present invention. The embodiment of method 1200 is described as being implemented using the apparatus 10 of FIG. 2 in a projectile 100 of FIGS. 1 and 3. In such an embodiment, at least a portion of the processing of method 1200 is performed by the attitude estimator module 130 executing on the processor 140 of the apparatus 10.

At block 1202, a magnetic unit vector in an inertial frame of the projectile 100 at the projectile launch location 4 is provided prior to launch of the projectile 100. In one implementation of this embodiment, the magnetic unit vector in an inertial frame of the projectile 100 at the projectile launch location 4 is stored in the memory 135 prior to launch.

At block 1204, a magnetic unit vector is determined in a body frame and in an inertial frame of the spinning projectile 100 during a flight of the spinning projectile 100. The magnetic unit vector is determined by measuring a body-axis magnetic vector m^(b) using the three-axis magnetometer 100 during the flight of the projectile 100 and by executing algorithms, such as algorithms in the attitude estimator module 130, at a processor 140 on board the projectile 100. The algorithms use the magnetic unit vector m^(N) of the inertial frame stored in the memory 135.

At block 1206, a velocity unit vector is determined in the body frame F_(b) and in the inertial frame F_(N) of the spinning projectile 100 during the flight of the spinning projectile 100. The velocity unit vector is determined in the body frame F_(b) and in the inertial frame F_(N) of the spinning projectile by measuring the specific force acting on the projectile using a single-axis accelerometer 120 having a sense axis 121 aligned with a spin axis X_(p) of the spinning projectile 100 and by determining a flight path angle γ as a function of time for the spinning projectile based on the measured specific force. The flight path angle γ is determined as a function of time of the spinning projectile 100 by applying a low-pass filter 129 to an accelerometer output to estimate drag on the spinning projectile 100. Determining the velocity unit vector in the inertial frame F_(N) based on the approximate flight path angle γ includes solving for the velocity unit vector as an intersection of a unit sphere 200 and two planes. A line formed from the two intersecting planes intersects the unit sphere 200 in two points. One of the two points is selected based on a direction of launch of the projectile (i.e., eastward or westward launching). The parameters of the line intersecting the unit sphere are calculated. The direction of the velocity unit vector in the body frame F_(b) is also determined based on the assumption that the velocity unit vector is parallel to the angular velocity unit vector in the body frame. The angular velocity unit vector is determined by high-pass filtering the single-axis accelerometer measurements and by calculating the time derivative of the local Earth magnetic field vector in the inertial frame and body frame. Typically, low-cost rate gyroscopes are unable to directly measure the angular velocity of a projectile spinning at rates greater than 100 Hz. In applications where the low-cost rate gyroscopes are able to measure the angular velocity of the spinning projectile, the angular velocity unit vector in the body frame is determined directly from the angular velocity measurements.

At block 1208, the roll angle, the pitch angle, and the heading angle of the spinning projectile are calculated during the flight of the spinning projectile, regardless of the spin rate of the projectile 100. The roll angle and the pitch angle of the spinning projectile comprise an attitude of the spinning projectile. The attitude and the heading angle of the spinning projectile are calculated by: generating a direction cosine matrix C by matching the magnetic unit vector and velocity unit vector in the body frame with the magnetic unit vector and velocity unit vector in the inertial frame; solving Wahba's problem for the direction cosine matrix C; and calculating the attitude and the heading angle from the direction cosine matrix. The correct solution to Wahba's problem is the attitude and the heading angle of the spinning projectile 100.

In this manner, an accurate, reliable, and low-cost guidance, navigation, and control capability for projectiles that includes an attitude and heading angle reference system (apparatus 10 or 11) is used to determine the roll angle and pitch angle (attitude), and heading angle of a spinning projectile during a flight of the spinning projectile even for fast spinning projectiles, such as gun-launched projectiles with initial angular velocities greater than 100 Hz.

Although specific embodiments have been described herein, it will be appreciated by those of skill in the art that other algorithms and protocols for a master-slave wireless network may be substituted for the specific embodiments described. This application is intended to cover any adaptations and variations of the present invention. Therefore it is manifestly intended that this invention be limited only by the claims and the equivalents thereof. 

1. A method to determine roll angle, pitch angle, and heading angle of a spinning projectile during a flight of the spinning projectile, the method comprising: providing a magnetic unit vector in an inertial frame of the projectile at a projectile launch location prior to launch of the projectile; determining a magnetic unit vector in a body frame and in an inertial frame of the spinning projectile during the flight of the spinning projectile; determining a velocity unit vector in the body frame and in the inertial frame of the spinning projectile during the flight of the spinning projectile; and calculating the roll angle, the pitch angle, and the heading angle of the spinning projectile during the flight of the spinning projectile, regardless of the spin rate of the projectile, wherein the roll angle and the pitch angle of the spinning projectile comprise an attitude of the spinning projectile.
 2. The method of claim 1, wherein determining the magnetic unit vector in the body frame and in the inertial frame of the spinning projectile comprises: measuring a body-axis magnetic vector using a three-axis magnetometer during the flight of the projectile; and executing algorithms at a processor on board the projectile, wherein the algorithms use the magnetic unit vector in the inertial frame at the projectile launch location.
 3. The method of claim 1, wherein determining the velocity unit vector in the body frame and in the inertial frame of the spinning projectile comprises: measuring a specific force using a single-axis accelerometer having a sense axis aligned with a spin axis of the spinning projectile; and determining a flight path angle as a function of time for the spinning projectile based on the measured specific force.
 4. The method of claim 3, further comprising: applying a low-pass filter to an output of the single-axis accelerometer to estimate drag on the spinning projectile; and determining a magnitude of a velocity vector, wherein the determining the flight path angle is based on the determined magnitude of the velocity vector.
 5. The method of claim 3, wherein the determining the velocity unit vector in the inertial frame is based on the determined flight path angle, the method further comprising: solving for the velocity unit vector as an intersection of a unit sphere and two planes, wherein a line formed from the two intersecting planes intersects the unit sphere in two points; selecting one of the two points based on a direction of launch of the projectile; and calculating the parameters of the line intersecting the unit sphere.
 6. The method of claim 5, further comprising: assuming the velocity unit vector in the inertial frame is parallel to the angular velocity unit vector in the body frame; applying a high-pass filter to an output of the single-axis accelerometer; calculating the time derivative of the local Earth magnetic field vector in the inertial frame and the body frame; generating the angular velocity unit vector in the body frame based on output from the high-pass filter and the time derivatives of the local Earth magnetic field vector; and determining a direction of the velocity unit vector in the body frame based on the generated angular velocity unit vector in the body frame.
 7. The method of claim 1, wherein calculating the roll angle, the pitch angle, and the heading angle of the spinning projectile comprises: generating a direction cosine matrix by matching the magnetic unit vector and the velocity unit vector in the body frame with the magnetic unit vector and the velocity unit vector in the inertial frame; solving Wahba's problem for the direction cosine matrix; and calculating the roll angle, the pitch angle, and the heading angle from the direction cosine matrix, wherein the correct solution to Wahba's problem is the roll angle, the pitch angle, and the heading angle of the spinning projectile.
 8. The method of claim 1, further comprising: aligning a sense axis of a single-axis accelerometer with a spin axis of the spinning projectile; filtering output from the single-axis accelerometer to determine drag acting on the spinning projectile; determining a magnitude of the velocity unit vector of the spinning projectile; and determining an angular velocity unit vector of the spinning projectile.
 9. The method of claim 8, wherein filtering output from the single-axis accelerometer includes filtering output from the single-axis accelerometer positioned on the spinning projectile spinning at a spin rate greater than 100 revolutions per second.
 10. The method of claim 1, further comprising orienting a sense axis of a single-axis accelerometer parallel to a spin axis of the projectile prior to launch of the projectile.
 11. The method of claim 1, wherein calculating the roll angle, the pitch angle, and the heading angle of the spinning projectile includes calculating the roll angle, the pitch angle, and the heading angle of the projectile spinning more than 100 revolutions per second.
 12. An apparatus to measure a three-dimensional attitude of a spinning projectile during a flight of the spinning projectile, the apparatus including: a three-axis magnetometer to measure the magnetic field of earth; a single-axis accelerometer having a sense axis parallel to a spin axis of the spinning projectile during the flight of the spinning projectile; and an attitude estimator module; at least one processor to receive outputs from the three-axis magnetometer and the single-axis accelerometer and to execute at least one algorithm in the attitude estimator module to determine an attitude and heading angle of the spinning projectile during the flight of the spinning projectile, regardless of a spin rate of the projectile, based on outputs from the three-axis magnetometer and the single-axis accelerometer, wherein the attitude and the heading angle comprise the three-dimensional attitude.
 13. The apparatus of claim 12, further comprising a Kalman filter to receive output from the attitude estimator module, wherein the Kalman filter computes estimates of the attitude and the heading angle of the spinning projectile.
 14. The apparatus of claim 12, wherein the attitude estimator receives from the three-axis magnetometer information indicative of a local Earth magnetic field vector at the projectile launch site prior to launch, and wherein the attitude estimator module includes the at least one algorithm to: use a low-pass filter on accelerometer measurements to compute the drag acting on the projectile; estimate a velocity unit vector in the inertial frame; estimate a velocity unit vector in the body frame; generate two 3×3 unit vector matrices; invert one 3×3 unit vector matrix; multiply one 3×3 unit vector matrix with the inverted 3×3 unit vector matrix to solve for Wahba's problem; and use a singular value decomposition to generate a direction cosine matrix from the direction cosine matrix calculated to solve Wahba's problem in order to enforce orthogonality constraints on the direction cosine matrix calculated to solve Wahba's problem.
 15. The apparatus of claim 12, further comprising a Kalman filter communicatively coupled to receive output from the attitude estimator module.
 16. A non-transitory computer readable medium embodying a program of instructions executable by a processor to perform a method comprising: determining a magnetic unit vector in a body frame and in an inertial frame of the spinning projectile during a flight of the spinning projectile; determining a velocity unit vector in the body frame and in the inertial frame of the spinning projectile during the flight of the spinning projectile; and calculating a roll angle, a pitch angle, and a heading angle of the spinning projectile during the flight of the spinning projectile, regardless of a spin rate of the projectile, wherein the roll angle, the pitch angle, and the heading angle of the spinning projectile comprise a three-dimensional attitude of the spinning projectile.
 17. The medium of claim 16, comprising the program of instructions executable by the processor to perform the method, which further comprises: solving for the velocity unit vector in the inertial frame as an intersection of a unit sphere and two planes, wherein a line formed from the two intersecting planes intersects the unit sphere in two points; selecting one of the two points based on a direction of launch of the projectile; and calculating parameters of the line intersecting the unit sphere.
 18. The medium of claim 17, comprising the program of instructions executable by the processor to perform the method, which further comprises: applying a high-pass filter to an output of the single-axis accelerometer; calculating the time derivative of the local Earth magnetic field vector in the inertial frame and the body frame generating the angular velocity unit vector in the body frame based on output from the high-pass filter and the time derivatives of the local Earth magnetic field vector; and determining a direction of the velocity unit vector in the body frame based on the generated angular velocity unit vector in the body frame, wherein the velocity unit vector in the body frame is assumed to be parallel to the angular unit velocity in the body frame.
 19. The medium of claim 17, comprising the program of instructions executable by the processor to perform the method, which further comprises: generating a direction cosine matrix by matching the magnetic unit vector and the velocity unit vector in the body frame with the magnetic unit vector and the velocity unit vector in the inertial frame; solving Wahba's problem for the direction cosine matrix; and calculating the roll angle, the pitch angle, and the heading angle from the direction cosine matrix, wherein the correct solution to Wahba's problem is the roll angle, the pitch angle, and the heading angle of the spinning projectile.
 20. The medium of claim 16, comprising the program of instructions executable by the processor to perform the method, which further comprises: using a low-pass filter on accelerometer measurements to compute the drag acting on the projectile; estimating a velocity unit vector in the inertial frame; estimating a velocity unit vector in the body frame; generating two 3×3 unit vector matrices; inverting one 3×3 unit vector matrix; multiplying one 3×3 unit vector matrix with the inverted 3×3 unit vector matrix to solve for Wahba's problem; and using a singular value decomposition to generate a direction cosine matrix from the direction cosine matrix calculated to solve Wahba's problem in order to enforce orthogonality constraints on the direction cosine matrix calculated to solve Wahba's problem. 